package com.itheima.d4_proxy;


/**
 * 2025年9月9日22:13:32： 磊哥讲的代理对象我没听懂，第198集
 *
 *什么是代理？
 *  代理思想就是被代理者没有能力，或者不愿意去完成某件事情，需要找个人（代理）代替自己去完成这件事
 *
 * 动态代理的作用：
 * 动态代理主要是对被代理对象的行为进行代理。
 *
 * 动态代理的开发步骤
 * 必须定义接口，里面定义一些行为，用来约束被代理对象和代理对象都要完成的事情。
 * 定义一个实现类实现接口，这个实现类的对象代表被代理的对象。
 * 定义一个测试类，在里面创建被代理对象，然后为其创建一个代理对象返回。（重点）
 * 代理对象中，需要模拟收首付款，真正触发被代理对象的行为，然后接收尾款操作。
 * 通过返回的代理对象进行方法的调用，观察动态代理的执行流程。
 *
 * 如何创建代理对象
 * Java中代理的代表类是：java.lang.reflect.Proxy，它提供了一个静态方法，用于为被代理对象，产生一个代理对象返回。
 * public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
 * 为被代理对象返回一个代理对象。
 * 参数一：类加载器 加载代理类，产生代理对象。，。
 * 参数二：真实业务对象的接口。(被代理的方法交给代理对象)
 * 参数三：代理的核心处理程序。
 *
 * 代理是什么？
 * 一个对象，用来对被代理对象的行为进行管理的对象。
 * 在Java中实现动态代理的步骤是什么样的？
 * 必须存在接口
 * 被代理对象需要实现接口。
 * 使用Proxy类提供的方法，为被代理对象创建一个代理对象。
 *
 * 通过代理对象调用方法，执行流程是什么样的？
 * 先走向代理
 * 代理中可以真正触发被代理对象的方法执行。
 * 回到代理中，由代理负责返回结果给调用者。
 */



public class BigStar implements Star{
    private String name;

    public BigStar(String name) {
        this.name = name;
    }

    public String sing(String name){
        System.out.println(this.name + "正在唱：" + name);
        return "谢谢！谢谢！";
    }

    public void dance(){
        System.out.println(this.name  + "正在优美的跳舞~~");
    }
}
